package com.bstek.poc.utils;

import android.content.Context;
import android.util.Log;
import jni.cylan.com.LoginReturn;
import jni.cylan.com.NativeFunction;
import jni.cylan.com.ProxyManager;

/**
 * ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * ┃　　　┃   神兽保佑
 * ┃　　　┃   代码无BUG！
 * ┃　　　┗━━━┓
 * ┃　　　　　　　┣┓
 * ┃　　　　　　　┏┛
 * ┗┓┓┏━┳┓┏┛
 * ┃┫┫　┃┫┫
 * ┗┻┛　┗┻┛
 * Created by leelucifer on 15/1/24.
 */
public class VPNUtils {

    /**
     * 开启vpn
     * @param context
     * @param ip
     * @param passport 用户名
     * @param password
     * @return
     */
    public static boolean openVPN(Context context,String ip,String passport,String password,String imei){
        jni.cylan.com.cylanlib.initsystem(context);
        LoginReturn retValue;
        try {
             //retValue = jni.cylan.com.NativeFunction.nativeUserLogin("202.104.12.101","test","test123","",2, "3.2.0", "cylan", "", "", "", "");
            retValue= NativeFunction.nativeUserLogin(ip, passport, password, imei, 2, "3.2.0", "cylan", "", "", "", "");
            if (retValue != null && retValue.mLoginState == retValue.RESULT_LOGIN_SUCCESS) {
                ProxyManager.getSessionManager().setSession(retValue.mSession);

                jni.cylan.com.NativeFunction.VPNInit(retValue.mSession);
                jni.cylan.com.NativeFunction.VPNStart();
                return true;
            }else
                return false;
        }catch (Throwable e){
            Log.e("VPNUrils",e.getMessage());
            e.printStackTrace();
            return false;
        }
    }


    public static boolean closeVPN(Context context){
       jni.cylan.com.cylanlib.initsystem(context);
        try {
            jni.cylan.com.NativeFunction.VPNStop();
            jni.cylan.com.NativeFunction.VPNCleanup();
            return true;
        }catch (Throwable e){
            return false;
        }
    }
}
